From 78e34144145785fc5ae3af53a8c270c62b4061ff Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Mon, 3 Apr 2017 14:08:15 +1200 Subject: [PATCH] Allow a client to override values in a config --- src/cargo/util/config.rs | 12 +++++++++++- src/cargo/util/mod.rs | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index c0527a760..17e909b97 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -109,6 +109,16 @@ impl Config { self.values.get_or_try_init(|| self.load_values()) } + pub fn set_values(&self, values: HashMap) -> CargoResult<()> { + if self.values.borrow().is_some() { + return Err(human("Config values already found")); + } + match self.values.fill(values) { + Ok(()) => Ok(()), + Err(_) => Err(human("Could not fill values")), + } + } + pub fn cwd(&self) -> &Path { &self.cwd } pub fn target_dir(&self) -> CargoResult> { @@ -378,7 +388,7 @@ impl Config { !self.frozen.get() && !self.locked.get() } - fn load_values(&self) -> CargoResult> { + pub fn load_values(&self) -> CargoResult> { let mut cfg = CV::Table(HashMap::new(), PathBuf::from(".")); walk_tree(&self.cwd, |mut file, path| { diff --git a/src/cargo/util/mod.rs b/src/cargo/util/mod.rs index 27da14148..9010a11a4 100644 --- a/src/cargo/util/mod.rs +++ b/src/cargo/util/mod.rs @@ -1,5 +1,5 @@ pub use self::cfg::{Cfg, CfgExpr}; -pub use self::config::{Config, homedir}; +pub use self::config::{Config, ConfigValue, homedir}; pub use self::dependency_queue::{DependencyQueue, Fresh, Dirty, Freshness}; pub use self::errors::{CargoResult, CargoError, Test, ChainError, CliResult}; pub use self::errors::{CliError, ProcessError, CargoTestError}; -- 2.30.2